#!/usr/bin/env python3
"""
ES索引迁移工具使用示例
展示如何配置和使用迁移工具
"""

from es_index_migrator import ESIndexMigrator

def example_basic_usage():
    """基本使用示例"""
    print("=== 基本使用示例 ===")
    
    # 使用默认配置文件中的设置
    migrator = ESIndexMigrator()
    
    # 执行完整迁移流程
    results = migrator.migrate_all()
    
    print(f"迁移完成，成功创建 {len(results['import_results']['success'])} 个索引")

def example_custom_config():
    """自定义配置示例"""
    print("=== 自定义配置示例 ===")
    
    # 自定义源ES配置
    source_config = {
        'host': '192.168.1.100',
        'port': 9200,
        'scheme': 'http',
        'username': None,
        'password': None,
        'verify_certs': False,
        'timeout': 30
    }
    
    # 自定义目标ES配置（带SSL和X-PACK）
    target_config = {
        'host': '192.168.1.200',
        'port': 9200,
        'scheme': 'https',
        'username': 'elastic',
        'password': 'your_secure_password',
        'verify_certs': True,
        'ca_certs': '/path/to/elasticsearch-ca.pem',
        'timeout': 60
    }
    
    # 创建迁移器实例
    migrator = ESIndexMigrator(source_config, target_config)
    
    # 分步执行迁移
    print("步骤1: 导出索引结构...")
    exported_data = migrator.export_index_structures('my_exported_indices.json')
    print(f"导出了 {len(exported_data)} 个索引")
    
    print("步骤2: 导入索引结构...")
    import_results = migrator.import_index_structures('my_exported_indices.json')
    print(f"成功创建 {len(import_results['success'])} 个索引")

def example_dry_run():
    """预览模式示例"""
    print("=== 预览模式示例 ===")
    
    # 修改配置以启用预览模式
    from config import MIGRATION_CONFIG
    MIGRATION_CONFIG['dry_run'] = True
    
    migrator = ESIndexMigrator()
    
    # 只导出，不实际创建索引
    print("预览模式：查看将要创建的索引...")
    exported_data = migrator.export_index_structures()
    import_results = migrator.import_index_structures()
    
    print("预览完成，没有实际创建任何索引")

def example_selective_migration():
    """选择性迁移示例"""
    print("=== 选择性迁移示例 ===")
    
    # 修改配置以包含特定索引
    from config import EXPORT_CONFIG
    EXPORT_CONFIG['excluded_indices'] = [
        '.kibana*',
        '.security*',
        'test_*',  # 排除测试索引
        'temp_*'   # 排除临时索引
    ]
    
    migrator = ESIndexMigrator()
    results = migrator.migrate_all()
    
    print("选择性迁移完成")

if __name__ == "__main__":
    """运行示例"""
    print("ES索引迁移工具使用示例\n")
    
    # 选择要运行的示例
    examples = {
        '1': ('基本使用', example_basic_usage),
        '2': ('自定义配置', example_custom_config),
        '3': ('预览模式', example_dry_run),
        '4': ('选择性迁移', example_selective_migration)
    }
    
    print("请选择要运行的示例:")
    for key, (name, func) in examples.items():
        print(f"{key}. {name}")
    
    choice = input("\n请输入选项 (1-4): ").strip()
    
    if choice in examples:
        name, func = examples[choice]
        print(f"\n运行示例: {name}")
        try:
            func()
        except Exception as e:
            print(f"示例运行失败: {e}")
    else:
        print("无效选项") 